package com.huawei.aw;

import java.util.Map;

/**
 * AWHttpResponse
 * 用于封装一次 HTTP 请求的完整上下文信息，便于调试、日志记录和结果分析。
 * 包含：
 * - 请求 URL 和方法
 * - 实际发送的请求头（已过滤受限头）
 * - 请求体（如 POST/PUT 的 JSON 字符串）
 * - 响应状态码
 * - 响应头
 * - 响应体（字符串）
 */
public class AWHttpResponse {

    private String url;                             // 请求的 URL
    private String method;                          // 请求方法：GET / POST / PUT
    private Map<String, String> requestHeaders;     // 实际发送的请求头（不含受限头）
    private String requestBody;                     // 请求体（GET 为 null）
    private int statusCode;                         // HTTP 响应状态码（如 200, 404）
    private Map<String, String> responseHeaders;    // 响应头（key -> 单值，多值用逗号合并）
    private String responseBody;                    // 响应体内容（字符串）

    /**
     * 构造函数
     */
    public AWHttpResponse(String url, String method,
                          Map<String, String> requestHeaders,
                          String requestBody,
                          int statusCode,
                          Map<String, String> responseHeaders,
                          String responseBody) {
        this.url = url;
        this.method = method;
        this.requestHeaders = requestHeaders;
        this.requestBody = requestBody;
        this.statusCode = statusCode;
        this.responseHeaders = responseHeaders;
        this.responseBody = responseBody;
    }

    // ===== Getter 方法 =====

    public String getUrl() {
        return url;
    }

    public String getMethod() {
        return method;
    }

    public Map<String, String> getRequestHeaders() {
        return requestHeaders;
    }

    public String getRequestBody() {
        return requestBody;
    }

    public int getStatusCode() {
        return statusCode;
    }

    public Map<String, String> getResponseHeaders() {
        return responseHeaders;
    }

    public String getResponseBody() {
        return responseBody;
    }

    /**
     * 简洁的 toString，便于日志输出
     */
    @Override
    public String toString() {
        return "AWHttpResponse{" +
                "url='" + url + '\'' +
                ", method='" + method + '\'' +
                ", statusCode=" + statusCode +
                ", requestBody='" + requestBody + '\'' +
                ", responseBody='" + responseBody + '\'' +
                '}';
    }
}